package com.dys.teststreamapi11;

import java.util.*;
import java.util.stream.Stream;

/**
 * @className: com.dys.teststreamapi11.StreamAPITest
 * @description: Stream流的获取方式
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/09/01 下午4:39
 */
public class StreamAPITest02 {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        arrayStream();
    }

    /**
     * java.util.Collection 接口中加入了default方法 stream，
     * 也就是说Collection接口下的所有的实现都可以通过steam方法来获取Stream流。
     */
    private static void collectionStream() {
        List<String> list = new ArrayList<>();
        list.stream();
        Set<String> set = new HashSet<>();
        set.stream();
        Vector<String> vector = new Vector<>();
        vector.stream();
    }

    /**
     * map获取stream流
     */
    private static void mapStream() {
        Map<Integer, String> map = new HashMap<>();
        Set<Integer> integers = map.keySet();
        integers.stream();

        Map<Integer, String> map2 = new HashMap<>();
        Collection<String> values = map2.values();
        values.stream();

        Map<Integer, String> map3 = new HashMap<>();
        Set<Map.Entry<Integer, String>> entries = map3.entrySet();
        entries.stream();
    }

    /**
     * 数组获取Stream流
     */
    private static void arrayStream() {
        Stream<String> s1 = Stream.of("a", "b", "c");
        String[] arr = {"a", "b", "c"};
        Stream<String> s2 = Stream.of(arr);
        Integer[] arr2 = {11, 22, 34, 55};
        Stream<Integer> s3 = Stream.of(arr2);
        s3.forEach(System.out::println);
        // 注意：基本数据类型的数组是不行的
        int[] arr3 = {1, 2, 3, 4, 5};
        Stream.of(arr3).forEach(System.out::println);
    }

}
